Buffer<mixed4> t0 : register(t0);


Texture2D<float4> StereoParams : register(t125);
Texture1D<float4> IniParams : register(t120);

void main( 
  float3 v0 : POSITION0,
  float3 v1 : NORMAL0,
  float4 v2 : TANGENT0,
  float4 v3 : BLENDWEIGHT0,
  int4 v4 : BLENDINDICES0,
  out float3 o0 : POSITION0,
  out float4 o1 : TEXCOORD0,
  out float4 o2 : TEXCOORD1)
{
  float4 r0,r1,r2,r3,r4,r5;
  uint4 bitmask, uiDest;
  float4 fDest;

  r0.xyzw = (int4)v4.xyzw * int4(3,3,3,3);
  r1.xyzw = t0.Load(r0.y).xyzw;
  r1.xyzw = v3.yyyy * r1.xyzw;
  r2.xyzw = t0.Load(r0.x).xyzw;
  r1.xyzw = v3.xxxx * r2.xyzw + r1.xyzw;
  r2.xyzw = t0.Load(r0.z).xyzw;
  r0.xyzw = t0.Load(r0.w).xyzw;
  r1.xyzw = v3.zzzz * r2.xyzw + r1.xyzw;
  r0.xyzw = v3.wwww * r0.xyzw + r1.xyzw;
  r1.xyz = v0.xyz;
  r1.w = 1;
  o0.x = dot(r1.xyzw, r0.xyzw);
  r2.xyzw = mad((int4)v4.xxyy, int4(3,3,3,3), int4(2,1,2,1));
  r3.xyzw = t0.Load(r2.w).xyzw;
  r3.xyzw = v3.yyyy * r3.xyzw;
  r4.xyzw = t0.Load(r2.y).xyzw;
  r3.xyzw = v3.xxxx * r4.xyzw + r3.xyzw;
  r4.xyzw = mad((int4)v4.zzww, int4(3,3,3,3), int4(2,1,2,1));
  r5.xyzw = t0.Load(r4.y).xyzw;
  r3.xyzw = v3.zzzz * r5.xyzw + r3.xyzw;
  r5.xyzw = t0.Load(r4.w).xyzw;
  r3.xyzw = v3.wwww * r5.xyzw + r3.xyzw;
  o0.y = dot(r1.xyzw, r3.xyzw);
  r5.xyzw = t0.Load(r2.z).xyzw;
  r2.xyzw = t0.Load(r2.x).xyzw;
  r5.xyzw = v3.yyyy * r5.xyzw;
  r2.xyzw = v3.xxxx * r2.xyzw + r5.xyzw;
  r5.xyzw = t0.Load(r4.x).xyzw;
  r4.xyzw = t0.Load(r4.z).xyzw;
  r2.xyzw = v3.zzzz * r5.xyzw + r2.xyzw;
  r2.xyzw = v3.wwww * r4.xyzw + r2.xyzw;
  o0.z = dot(r1.xyzw, r2.xyzw);
  r1.y = dot(v1.xyz, r3.xyz);
  r3.y = dot(v2.xyz, r3.xyz);
  r1.z = dot(v1.xyz, r2.xyz);
  r3.z = dot(v2.xyz, r2.xyz);
  r1.x = dot(v1.xyz, r0.xyz);
  r3.x = dot(v2.xyz, r0.xyz);
  r0.x = dot(r1.xyz, r1.xyz);
  r0.x = rsqrt(r0.x);
  o1.xyz = r1.xyz * r0.xxx;
  r0.x = dot(r3.xyz, r3.xyz);
  r0.x = rsqrt(r0.x);
  o2.xyz = r3.xyz * r0.xxx;
  o2.w = v2.w;
  return;
}